package com.erp.erp_servers.warehouse;

import com.erp.erp_entitys.warehouse.entity.OtherOutStockEntity;
import com.erp.erp_entitys.warehouse.req.CustomerInfoReq;
import com.erp.erp_entitys.warehouse.req.CustomerQueryReq;
import com.erp.erp_entitys.warehouse.req.OtherOutStockListByPageReq;
import com.erp.erp_entitys.warehouse.rsp.*;

import java.util.List;

/**
 * @ClassName : IOtherOutStockService
 * @Description : 其它出库接口
 * @Author : lst
 * @Date: 2020-07-29 12:08
 */
public interface IOtherOutStockService {

    /**
     * 通过id查询其他出库信息
     * @param id id
     * @return 其它出库对象
     */
    OtherOutStockEntity queryById(Integer id);

    /**
     * 通过实体作为筛选条件查询
     *
     * @param otherOutStock 实例对象
     * @return 对象列表
     */
    List<OtherOutStockEntity> queryAll(OtherOutStockEntity otherOutStock);

    /**
     * 获取出库信息
     * @param req 出库参数
     * @return 出库信息
     */
    List<OtherOutStockEntity> getListByPage(OtherOutStockListByPageReq req);

    /**
     * 新增数据
     *
     * @param otherOutStock 实例对象
     * @return 影响行数
     */
    int insert(OtherOutStockEntity otherOutStock);

    /**
     * 修改数据
     *
     * @param otherOutStock 实例对象
     * @return 影响行数
     */
    int update(OtherOutStockEntity otherOutStock);



    //**************************************客户信息表***************************************************

    /**
     * 获取客户所有信息
     * @param limitSize 查询条数
     * @param info 查询条件
     * @param userCode 用户编码
     * @return 客户所有信息
     */
    List<CustomerInfoRsp> getCustomerAllInfo(Integer limitSize, String info, String userCode);

    /**
     * 获取客户信息
     * @param req 查询对象
     * @return 客户信息
     */
    List<CustomerInfoRsp> getCustomerInfo(CustomerInfoReq req);


    /**
     * 获取客户信息
     * @param code 客户编码
     * @return 客户信息
     */
    CustomerInfoRsp getCustomerByCode(String code);

    /**
     * 通过条件获取客户信息
     * @param req 查询条件实体
     * @return 客户信息
     */
    List<CustomerInfoDataRsp> getCustomerByQuery(CustomerQueryReq req);


    //**************************************客户联系人***************************************************

    /**
     * 通过客户编码获取客户联系人信息
     * @param customCode 客户编码
     * @return 客户联系人
     */
    List<CustomerContactRsp> getCustomerContactInfo(String customCode);

    /**
     * 根据客户编码获取客户联系人信息
     * @param req 客户编码
     * @return 客户联系人信息
     */
    List<CustomerContactInfoDataRsp> getCustomerContactInfoByCode(CustomerInfoReq req);



    //**************************************用户信息表*************************************************

    /**
     * 获取所有用户信息
     * @return 用户信息
     */
    List<UserInfoRsp> getAllUserInfo();
}
